Configurable devices have recently become popular to address circuit design problems. One example of a configurable device is a programmable device having circuit components that can be configured into sub-circuits and circuits. One example of a configurable device is a field programmable analog array (FPAA).
A field programmable analog array (FPAA) consists of a collection of analog circuit components and switches. In order to realize a particular circuit design, the switches can be used to connect together components. The switches are also used to set values of individual analog circuit components. A binary bit stream can be downloaded to an FPAA in order to set the FPAA's switches, which in turn defines a particular circuit. However, even modestly sized FPAAs have thousands of switches that need to be set. Accordingly, there is a need for a technique to simplify the circuit design and switch-setting problem. Additionally, there is a need for an improved technique for simulating particular analog circuit designs.
For example, field programmable gate arrays (FPGAs) include a collection of digital circuit components and a collection of switches that may be used to connect the digital components together in order to realize various sub-circuits and circuits. However, the design and connection of analog components within a field programmable analog array (FPAA) differs significantly from the design and connection of digital components within a field programmable gate array (FPGA). First, digital design software tools do not readily adapt to use in the analog domain. Secondly, analog components often have adjustable values, such as gain, frequency, resistance, etc., but digital components do not. Thirdly, simulators used with field programmable gate arrays (FPGAs) are typically digital logic simulators that do not apply to analog circuits.
According to previously known techniques, full custom integrated circuit design was relatively time-consuming and required extensive analog design expertise. Programmable devices and FPAAs, in particular, provide the ability to quickly produce and change circuits when given the proper data to program the array. However, this provision requires the generation of custom programming data, which is complicated and requires an intimate knowledge of both array architecture and design of circuits using the technology that the array is built upon.
For the case where a microprocessor provided adjacent to an FPAA is required to change aspects of the circuit function implemented by the FPAA, a circuit designer has needed an intimate knowledge of array architecture, the design of circuits using the technology on which the FPAA has been built, and the construction of the specific data sequences to cause the FPAA to realize such circuits.
Hence, the above-described technique involves the generation of custom programming data that is very labor-intensive and so complex as to be difficult to implement. Accordingly, improvements are needed to overcome this problem.
Accordingly, improvements are also needed in order to enable programming of a programmable device that includes analog components.